/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */



import java.io.IOException;

/**
 *
 * @author ntomio
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    
    private static Tampon tamponDeTrace = new Tampon();
    private static Tampon tamponDeReception = new Tampon();
    private static Tampon tamponDemission = new Tampon();
    private static HorlogeLamport horloge = new HorlogeLamport();
    
    public static void main(String[] args) throws IOException 
    {
             
        // Création du client
        System.out.println("-- Création du client :");
        Client client = new Client (tamponDeTrace);
        client.start();

        // On vérifie si un message est disponible dans le tampon de réception ...
        while(tamponDeReception.getSize() > 0){
            receptionMessage();
        }

        //Envoi des messages
        /*
            envoiMessage("SC,1,2,10");
            envoiMessage("REQ,1,2,10,12");
            envoiMessage("REP,2,1,12,14");
            envoiMessage("Fin");
         */
    }

    /*
     * Envoi du message
     */
    public static void envoiMessage(String message)
    {
        //Ajout du message dans le tampon d'émission
        tamponDemission.setElementTampon(message);
        //Incrément de l'horloge
        horloge.incrementeHorloge();
        // Envoi du message envoyé dans le tampon de trace
        envoiTrace(message);
    }

    /*
     * Réception du message
     */
    public static void receptionMessage(){
        // Récupération du message dans le tampon de réception
        tamponDeReception.getElementTampon();
        // Incrément de l'horloge
        horloge.incrementeHorloge();
        // Envoi du message reçu dans le tampon de trace
        envoiTrace(tamponDeReception.toString());
    }

    /*
     * Envoi trace
     */
    public static void envoiTrace(String message){
        //Ajout du message d'envoi ou de réception dans le tampon de trace
        tamponDeTrace.setElementTampon(message);
    }
}
